home *** CD-ROM | disk | FTP | other *** search
/ Holt Researcher: American History / Holt Researcher: American History.iso / pc / modules / search.dxr / 00032_selection popup.ls < prev    next >
Encoding:
Text File  |  2000-01-18  |  5.7 KB  |  202 lines

  1. property ancestor, pkCategoryField, pkSelectionBkgnd, pkSelectionField, pkFreeFindBkgnd, pkFreeFindText, pkFreeFindEnter, pBankNumber, pPopupMode, pIsComplete
  2.  
  3. on getBankNumber me
  4.   return pBankNumber
  5. end
  6.  
  7. on getPopupMode me
  8.   return pPopupMode
  9. end
  10.  
  11. on isComplete me
  12.   return pIsComplete
  13. end
  14.  
  15. on setComplete me, isComplete
  16.   pIsComplete = isComplete
  17. end
  18.  
  19. on new me, channelList, bankNumber, descendant
  20.   if objectp(descendant) then
  21.     ancestor = new(script("auto popup menu"), channelList, descendant)
  22.   else
  23.     ancestor = new(script("auto popup menu"), channelList, me)
  24.   end if
  25.   disable(ancestor)
  26.   pkCategoryField = 39
  27.   pkSelectionBkgnd = 41
  28.   pkSelectionField = 42
  29.   pkFreeFindBkgnd = 44
  30.   pkFreeFindText = 45
  31.   pkFreeFindEnter = 46
  32.   pPopupMode = #category
  33.   pBankNumber = bankNumber
  34.   pIsComplete = 0
  35.   return me
  36. end
  37.  
  38. on Inscope me
  39.   Inscope(ancestor)
  40.   if isdisabled(me) then
  41.     disable(me)
  42.   else
  43.     enable(me)
  44.   end if
  45. end
  46.  
  47. on enable me
  48.   enabledMenu = the number of member "selection menu enabled"
  49.   set the memberNum of sprite the pBaseChannel of me to enabledMenu
  50.   enable(ancestor)
  51. end
  52.  
  53. on disable me
  54.   disabledMenu = the number of member "selection menu disabled"
  55.   set the memberNum of sprite the pBaseChannel of me to disabledMenu
  56.   disable(ancestor)
  57. end
  58.  
  59. on clear me
  60.   pIsComplete = 0
  61.   disable(me)
  62.   clear(ancestor)
  63. end
  64.  
  65. on clone me, srcPopupObj
  66.   pPopupMode = getPopupMode(srcPopupObj)
  67.   pIsComplete = isComplete(srcPopupObj)
  68.   clone(ancestor, srcPopupObj)
  69. end
  70.  
  71. on setType me, menuType
  72.   clear(me)
  73.   case menuType of
  74.     1:
  75.       pPopupMode = #category
  76.       menuText = the text of field "category translation"
  77.       put menuText into field the memberNum of sprite pkCategoryField
  78.     2:
  79.       pPopupMode = #timePeriod
  80.       menuText = the text of field "timePeriod translation"
  81.       put menuText into field the memberNum of sprite pkSelectionField
  82.     3:
  83.       pPopupMode = #freeFind
  84.       setText(me, " ")
  85.       setSelection(me, 0)
  86.   end case
  87. end
  88.  
  89. on expand me
  90.   global gSearchObj
  91.   baseSpriteRect = the rect of sprite me.pBaseChannel
  92.   baseSpriteLoc = point(baseSpriteRect.left, baseSpriteRect.top)
  93.   case pPopupMode of
  94.     #category:
  95.       set the loc of sprite pkCategoryField to baseSpriteLoc
  96.     #timePeriod:
  97.       offsetReg = member(the memberNum of sprite pkSelectionBkgnd).regPoint
  98.       offset = baseSpriteLoc - the loc of sprite pkSelectionBkgnd + offsetReg
  99.       set the loc of sprite pkSelectionBkgnd to the loc of sprite pkSelectionBkgnd + offset
  100.       set the loc of sprite pkSelectionField to the loc of sprite pkSelectionField + offset
  101.     #freeFind:
  102.       put getText(me) into field the memberNum of sprite pkFreeFindText
  103.       offset = baseSpriteLoc - the loc of sprite pkFreeFindBkgnd
  104.       sprite(pkFreeFindText).visible = 0
  105.       set the loc of sprite pkFreeFindBkgnd to the loc of sprite pkFreeFindBkgnd + offset
  106.       set the loc of sprite pkFreeFindText to the loc of sprite pkFreeFindText + offset
  107.       set the loc of sprite pkFreeFindEnter to the loc of sprite pkFreeFindEnter + offset
  108.       sprite(pkFreeFindText).visible = 1
  109.       updateStage()
  110.   end case
  111.   me.pIsPopped = 1
  112.   setPoppedMenu(getMenuBankObj(gSearchObj), me)
  113.   updateStage()
  114. end
  115.  
  116. on contract me
  117.   global gSearchObj
  118.   if not pIsComplete then
  119.     disable(me)
  120.   end if
  121.   offset = -9999
  122.   case pPopupMode of
  123.     #category:
  124.       set the loc of sprite pkCategoryField to point(offset, offset)
  125.       popupMember = the memberNum of sprite pkCategoryField
  126.       member(popupMember).color = color(#paletteIndex, 255)
  127.     #timePeriod:
  128.       set the loc of sprite pkSelectionBkgnd to the loc of sprite pkSelectionBkgnd + offset
  129.       set the loc of sprite pkSelectionField to the loc of sprite pkSelectionField + offset
  130.       popupMember = the memberNum of sprite pkSelectionField
  131.       member(popupMember).color = color(#paletteIndex, 255)
  132.       member(popupMember).scrollTop = 0
  133.     #freeFind:
  134.       sprite(pkFreeFindText).visible = 0
  135.       set the loc of sprite pkFreeFindBkgnd to the loc of sprite pkFreeFindBkgnd + offset
  136.       set the loc of sprite pkFreeFindText to the loc of sprite pkFreeFindText + offset
  137.       set the loc of sprite pkFreeFindEnter to the loc of sprite pkFreeFindEnter + offset
  138.       sprite(pkFreeFindText).visible = 1
  139.   end case
  140.   me.pIsPopped = 0
  141.   setPoppedMenu(getMenuBankObj(gSearchObj), 0)
  142.   updateStage()
  143. end
  144.  
  145. on mouseUp me
  146.   global gSearchObj
  147.   if not me.pIsDisabled then
  148.     if not me.pIsPopped then
  149.       poppedMenu = getPoppedMenu(getMenuBankObj(gSearchObj))
  150.       if objectp(poppedMenu) then
  151.         contract(poppedMenu)
  152.       end if
  153.       expand(me)
  154.     else
  155.       performFunction(me)
  156.     end if
  157.   end if
  158. end
  159.  
  160. on performFunction me
  161.   case pPopupMode of
  162.     #category:
  163.       mLine = the mouseLine
  164.       if mLine > 0 then
  165.         pIsComplete = 1
  166.         popupMember = the memberNum of sprite pkCategoryField
  167.         setText(me, line mLine of the text of field popupMember)
  168.         setSelection(me, mLine)
  169.         contract(me)
  170.         finalizeSelection(me)
  171.       end if
  172.     #timePeriod:
  173.       mLine = the mouseLine
  174.       if mLine > 0 then
  175.         pIsComplete = 1
  176.         popupMember = the memberNum of sprite pkSelectionField
  177.         setText(me, line mLine of the text of field popupMember)
  178.         setSelection(me, mLine)
  179.         contract(me)
  180.         finalizeSelection(me)
  181.       end if
  182.     #freeFind:
  183.       pIsComplete = 1
  184.       setText(me, the text of field the memberNum of sprite pkFreeFindText)
  185.       setSelection(me, 1)
  186.       contract(me)
  187.       finalizeSelection(me)
  188.   end case
  189. end
  190.  
  191. on finalizeSelection me
  192.   global gSearchObj
  193.   menuBankObj = getMenuBankObj(gSearchObj)
  194.   setBankStatus(menuBankObj, pBankNumber, #complete)
  195.   if pBankNumber < 3 then
  196.     if getBankStatus(menuBankObj, pBankNumber + 1) = #hidden then
  197.       addMenuObj = getMenuObj(menuBankObj, pBankNumber + 1, #add)
  198.       showMe(addMenuObj)
  199.     end if
  200.   end if
  201. end
  202.